package com.chf.carsystem.users.usecontroller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.chf.carsystem.common.util.EncryptUtil;
import com.chf.carsystem.users.pojo.MyEnum;
import com.chf.carsystem.users.pojo.User;
import com.chf.carsystem.users.service.IUserService;
import com.sun.net.httpserver.HttpServer;

/**
 * 不需要的登录可以访问的controller
 * @author Administrator
 *
 */

@Controller
public class UserNoLogerController {

	@Resource
	private IUserService userService;
	@Resource
	private EncryptUtil encryptUtil;
	private String info;
	
	/*打开登录页*/
	@RequestMapping("/login")
	public String login()
	{
		System.out.println("----------login()----------");
		return "/head/login";
	}
	
	/*登录提交*/
	@RequestMapping("/loginCommit")
	public String loginCommit(String name,String password,Model model,HttpServletRequest request,HttpSession session)
	{
		
		Map<String,Object> findOneMap = new HashMap<String,Object>();
		findOneMap.put("name",name);
		//根据用户名查用户是否存在
		User user = this.userService.findOneService(findOneMap);
		if(user != null)
		{
			//说明用户名存在  判断密码 这里用到密码加密类 加加密jar包 创建加密类
			if(encryptUtil.EncryptStr(password).equalsIgnoreCase(user.getPassword()))
			{
				//说明密码正确 判断用户的状态 是否是禁用 这里要创建一个枚举类  再在实体类中创建状态的string 属性
				//所有的代码中涉及到枚举项的值都根据枚举项来判断
				if(user.getStatus() == MyEnum.USERSTATUS_ENABLEN.getStatus())
				{
					//说明它的状态是启用状态 登录成功
					//修改用户的登录ip,时间，次数
					user.setLastLoginIp(request.getRemoteAddr()); //远程ip
					user.setLastLoginTime(new Date());
					user.setLoginCount(user.getLoginCount()+1);
					user.setUpdateTime(new Date());
					//调用更新方法
					try {
						this.userService.updateOneUserService(user);
					} catch (Exception e) {
						info = "服务器忙,请重新访问";
						model.addAttribute("info", info);
						return "/head/login";
					}
					//把用户保存到session中
					session.setAttribute("user", user);
					//重定向到主页 创建需要登录成功后才能访问的controller 为拦截器做准备
					return "redirect:/head/main.html";
				}else
				{
					//否则状态是禁用
					info = MyEnum.USERSTATUS_DiSABLE.getInfo();
				}
			
			}else
			{
				//密码错误
				info = "密码错误";
			}
		}else
		{
			//用户名错误
			info="用户名错误";
		}
		
		//将提示信息存入request中
		model.addAttribute("info", info);
		return "/head/login";
	}
	
	/*退出系统*/
	@RequestMapping("/exitSystem")
	public String exitSystem(HttpSession session)
	{
		
		//得到session 销毁
		session.invalidate();
		
		return this.login();
	}
	
	
}
